package org.flint.data.structure.stack;

/**
 * @author flint92
 */
public interface Stack<E> {

    /**
     * 入栈操作
     * @param e     数据
     */
    void push(E e);

    /**
     * 出栈操作
     * @return      返回栈顶数据
     */
    E pop();

    /**
     * 获取栈顶元素 与{@link #pop()}不同的是数据不会出栈
     * @return      栈顶数据
     */
    E peek();

    /**
     * 获取栈的大小
     * @return      栈的大小
     */
    int getSize();

    /**
     * 判断是否为空
     * @return      bool
     */
    boolean isEmpty();
}
